package com.budwk.app.sys.services;

import com.alibaba.fastjson.JSONObject;
import com.budwk.app.sys.models.Sys_dict;
import com.budwk.app.sys.vo.SysDictVO;
import com.budwk.starter.database.service.BaseService;

import java.util.List;

/**
 * @author wizzer@qq.com
 */
public interface SysDictService extends BaseService<Sys_dict> {

    /**
     * 通过code获取子级
     *
     * @param code 标识
     * @return
     */
    List<Sys_dict> getSubListByCode(String code);

    /**
     * 通过父id获取下级列表
     *
     * @param id ID
     * @return
     */
    List<Sys_dict> getSubListById(String id);

    /**
     * 保存数据字典
     *
     * @param dict 字典对象
     * @param pid  父ID
     */
    void save(Sys_dict dict, String pid);

    /**
     * 级联删除数据
     *
     * @param dict 字典对象
     */
    void deleteAndChild(Sys_dict dict);

    /**
     * 清空缓存
     */
    void cacheClear();

    List<SysDictVO> getDictTree(Sys_dict queryDict);

    List<Sys_dict> listDictByName(String dictName);

    List<SysDictVO> listDictByCode(String dictCode);

    Sys_dict getByCode(String dictCode);


    void updateDict(Sys_dict dict);

    JSONObject listDictByCodes(List<String> dictCodes);

    List<Sys_dict> batchQueryByCodes(List<String> dictCodes);

    /**
     * 获取所有子集
     * @param parentId
     * @return
     */
    List<Sys_dict> listChildRen(String parentId);

    Sys_dict getDictByLikeCode(String code);

    /**
     * 根据父级字典名称查询子级并根据location排序
     * @param dictName,code,isCounty
     * @return
     */
    List<Sys_dict> listDictChildByName(String dictName,String code,boolean isCounty);

    String getCode(String parentCode, String name);
}
